#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    auto begin = v.begin();
    // auto end = v.end();     // 保存尾迭代器的值是一个坏主意
    // while (begin != end)    // 灾难：此循环的行为是未定义的（会出现死循环）
    while (begin != v.end())
    {
        // 做一些处理
        // 插入新值，对 begin 重新赋值，否则的话它就会失效
        ++begin; // 向前移动 begin，因为我们想在此元素之后插入元素
        begin = v.insert(begin, 42); // 插入新值
        ++begin; // 向前移动 begin 跳过我们刚刚加入的元素
    }
    for (int i : v)
        cout << i << " ";
    cout << endl;
}